package modelo;

import org.joda.time.LocalDate;
import org.joda.time.LocalTime;

/**
 * Entidade da Consulta.
 * 
 * @author Marcilio Leite
 *
 */
public class Consulta {
 
	private int id;
	
	private String medico;
	
	private String paciente;
	
	private LocalDate data;
	
	private LocalTime hora;
	
	/*
	 * Construtor vazio.
	 */
	public Consulta() {
		
	}
	
	/*
	 * Construtor para popular o objeto.
	 */
	public Consulta(int id, String medico, String paciente,
		LocalDate data, LocalTime hora) {
		
		this.id = id;
		this.medico = medico;
		this.paciente = paciente;
		this.data = data;
		this.hora = hora;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getMedico() {
		return medico;
	}

	public void setMedico(String medico) {
		this.medico = medico;
	}

	public String getPaciente() {
		return paciente;
	}

	public void setPaciente(String paciente) {
		this.paciente = paciente;
	}

	public LocalDate getData() {
		return data;
	}

	public void setData(LocalDate data) {
		this.data = data;
	}

	public LocalTime getHora() {
		return hora;
	}

	public void setHora(LocalTime hora) {
		this.hora = hora;
	}
	
	@Override
	public boolean equals(Object obj) {
		
		boolean igual = true;
		
		if (obj == null) {
			igual = false;
		}
		
		if ( !(obj instanceof Consulta) ) {
			igual = false;
		}
		
		final Consulta outra = (Consulta)obj;
		
		if ( !data.equals(outra.getData()) || outra.getData() == null ) {
			igual = false;
		}

		if ( !hora.equals(outra.getHora()) || outra.getHora() == null ) {
			igual = false;
		}
		
		if ( !medico.equals(outra.getMedico()) || outra.getMedico() == null ) {
			igual = false;
		}
		
		if ( !paciente.equals(outra.getPaciente()) || outra.getPaciente() == null ) {
			igual = false;
		}
		
		return igual;
	}
	
	@Override
	public int hashCode() {
		int hash = 7;
		int salt = 23;
		
		hash += salt * hash + (medico != null ? medico.hashCode() : 0);
		hash += salt * hash + (paciente != null ? paciente.hashCode() : 0);
		hash += salt * hash + (data != null ? data.hashCode() : 0);
		hash += salt * hash + (hora != null ? hora.hashCode() : 0);
		
		return hash;
	}
	
}
